#include<fuquOS/kernel_conf.h>
#include<fuquOS/printk.h>

void test_isr(){
	#ifdef TEST_ISR_DIVIDE_ERROR
	printk("\nTesting ISR: Divide Error (ISR 0)\n");
	asm volatile("int $0");
	#endif
	#ifdef TEST_ISR_DEBUG
	printk("\nTesting ISR: Debug (ISR 1)\n");
	asm volatile("int $1");
	#endif
	#ifdef TEST_ISR_NMI
	printk("\nTesting ISR: NMI (ISR 2)\n");
	asm volatile("int $2");
	#endif
	#ifdef TEST_ISR_BREAKPOINT
	printk("\nTesting ISR: Breakpoint (ISR 3)\n");
	asm volatile("int $3");
	#endif
	#ifdef TEST_ISR_OVERFLOW
	printk("\nTesting ISR: Overflow (ISR 4)\n");
	asm volatile("int $4");
	#endif
	#ifdef TEST_ISR_BOUND_RANGE_EXCEEDED
	printk("\nTesting ISR: Bound Range Exceeded (ISR 5)\n");
	asm volatile("int $5");
	#endif
	#ifdef TEST_ISR_INVALID_OPCODE
	printk("\nTesting ISR: Invalid Opcode (ISR 6)\n");
	asm volatile("int $6");
	#endif
	#ifdef TEST_ISR_DEVICE_NOT_AVAILABLE
	printk("\nTesting ISR: Device Not Available (ISR 7)\n");
	asm volatile("int $7");
	#endif
	#ifdef TEST_ISR_DOUBLE_FAULT
	printk("\nTesting ISR: Double Fault (ISR 8)\n");
	asm volatile("int $8");
	#endif
	#ifdef TEST_ISR_COPROCESSOR_SEGMENT_OVERRUN
	printk("\nTesting ISR: Coprocessor Segment Overrun (ISR 9)\n");
	asm volatile("int $9");
	#endif
	#ifdef TEST_ISR_INVALID_TSS
	printk("\nTesting ISR: Invalid TSS (ISR 10)\n");
	asm volatile("int $10");
	#endif
	#ifdef TEST_ISR_SEGMENT_NOT_PRESENT
	printk("\nTesting ISR: Segment Not Present (ISR 11)\n");
	asm volatile("int $11");
	#endif
	#ifdef TEST_ISR_STACK_SEGMENT_FAULT
	printk("\nTesting ISR: Stack Segment Fault (ISR 12)\n");
	asm volatile("int $12");
	#endif
	#ifdef TEST_ISR_GENERAL_PROTECTION
	printk("\nTesting ISR: General Protection (ISR 13)\n");
	asm volatile("int $13");
	#endif
	#ifdef TEST_ISR_PAGE_FAULT
	printk("\nTesting ISR: Page Fault (ISR 14)\n");
	asm volatile("int $14");
	#endif
	#ifdef TEST_ISR_RESERVED
	printk("\nTesting ISR: Reserved (ISR 15)\n");
	asm volatile("int $15");
	#endif
	#ifdef TEST_ISR_X87_FPU_ERROR
	printk("\nTesting ISR: x87 FPU Error (ISR 16)\n");
	asm volatile("int $16");
	#endif
	#ifdef TEST_ISR_ALIGNMENT_CHECK
	printk("\nTesting ISR: Alignment Check (ISR 17)\n");
	asm volatile("int $17");
	#endif
	#ifdef TEST_ISR_MACHINE_CHECK
	printk("\nTesting ISR: Machine Check (ISR 18)\n");
	asm volatile("int $18");
	#endif
	#ifdef TEST_ISR_SIMD_FLOATING_POINT
	printk("\nTesting ISR: SIMD Floating Point (ISR 19)\n");
	asm volatile("int $19");
	#endif
}
